package com.ayu.wxgzh.ayucyy.service;

import com.aliyun.oss.OSS;
import com.aliyun.oss.OSSClientBuilder;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletRequest;
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

/**
 * @Author: 徐林玉//作者及
 * @Date: 2021/11/16//完成日期
 * @Description: //
 * @Version: v0.0.1 // 版本信息
 * @Function List: // 主要函数及其功能
 * @Others: // 其它内容的说明
 * @History: // 历史修改记录
 **/
@Service
public class OssService
{

	@Value("${aliyun.oss.file.endpoint:}")
	private String endpoint;

	@Value("${aliyun.oss.file.accesskeyid:}")
	private String keyId;

	@Value("${aliyun.oss.file.accesskeysecret:}")
	private String keySecret;

	@Value("${aliyun.oss.file.bucketname:}")
	private String bucketName;


	public String uploadAvatar(HttpServletRequest file)
	{

		// 创建OSS实例。
		OSS ossClient = new OSSClientBuilder().build(endpoint, keyId, keySecret);

		try
		{

			//获取上传文件输入流
			InputStream inputStream = file.getInputStream();
			//获取文件名称
//			String fileName = file.getOriginalFilename();
			String fileName = ".gif";
			//1 在文件名称里面添加随机唯一的值
			String uuid = UUID.randomUUID().toString().replaceAll("-", "");
			// yuy76t5rew01.jpg
			fileName = uuid + fileName;

			//2 把文件按照日期进行分类
			//获取当前日期
			//   2019/11/12
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy/MM/dd");
			String datePath = sdf.format(new Date());
			//拼接
			//  2019/11/12/ewtqr313401.jpg
			fileName = datePath + "/" + fileName;

			//调用oss方法实现上传
			//第一个参数  Bucket名称
			//第二个参数  上传到oss文件路径和文件名称   aa/bb/1.jpg
			//第三个参数  上传文件输入流
			ossClient.putObject(bucketName, fileName, inputStream);

			//把上传之后文件路径返回
			//需要把上传到阿里云oss路径手动拼接出来
			//  https://edu-guli-1010.oss-cn-beijing.aliyuncs.com/01.jpg
			String url = "https://" + bucketName + "." + endpoint + "/" + fileName;
			return url;
		} catch (Exception e)
		{
			e.printStackTrace();
			return null;
		} finally
		{
			// 关闭OSSClient。
			ossClient.shutdown();

		}

	}
}
